package storage

const (
	NodeTypeNormal int = iota //常规节点
	NodeTypeStart             //开始节点
	NodeTypeEnd               //停止节点
	NodeTypeRoute             //判断节点
)

type Node struct {
	TopNodeID   string `description:"主数据ID"`
	NodeID      string `description:"节点ID"`
	NodeCode    string `description:"节点编码"`
	NodeName    string `description:"节点名称"`
	NodeLevel   int    `description:"节点层级"`
	NodeType    int    `description:"节点类型"`
	UserGroupID string `description:"数据用户组"`
	RouteID     string `description:"判断节点ID"`
	RouteSuccID string `description:"成功数据流ID"`
	RouteFailID string `description:"失败数据流ID"`
	ChildID     string `description:"子节点数据ID"`
}

type RouteNode struct {
	TopID    string `description:"主数据ID"`
	RouteID  string `description:"公式数据ID"`
	ParentID string `description:"父公式ID"`
	Formula  string `description:"公式解析(eg. a=b|a>b|a<b|a>=b|a<=b|a)"`
	ActType  string `description:"连接符号(eg. and|or)"`
}

type WorkStatus int

const (
	WorkStatusWorking WorkStatus = iota //运行中
	WorkStatusEnd                       //结束
	WorkStatusStop                      //终止
)

type WorkDetailStatus int

const (
	WorkDetailStatusSleep  WorkDetailStatus = iota //未激活
	WorkDetailStatusActive                         //激活中
	WorkDetailStatusEnd                            //结束
	WorkDetailStatusStop                           //终止
)

type Work struct {
	WorkID       string `description:"工作ID"`
	WorkFlowID   string `description:"工作流ID"`
	WorkFlowCode string `description:"工作编码"`
	WorkName     string `description:"工作名称"`
	WorkStatus   int    `description:"工作状态(0=运行,1=结束,2=终止)"`
	WorkEndMemo  string `description:"工作结束备注"`
	ExtendVal1   string `description:"扩展字段1"`
	ExtendVal2   string `description:"扩展字段2"`
	ExtendVal3   string `description:"扩展字段3"`
	ExtendVal4   string `description:"扩展字段4"`
	ExtendVal5   string `description:"扩展字段5"`
	Data         string `description:"工作数据的json内容"`
	CreateTime   string `description:"创建时间"`
	CreateUser   string `description:"创建用户"`
}

type WorkDetail struct {
	WorkDetailID     string `description:"工作明细ID"`
	WorkID           string `description:"工作ID"`
	NodeID           string `description:"流程ID"`
	WorkDetailStatus int    `description:"工作状态(0=未启用,1=启用,2=结束)"`
	WorkDetailMemo   string `description:"工作节点备注"`
	ExtendVal1       string `description:"扩展字段1"`
	ExtendVal2       string `description:"扩展字段2"`
	ExtendVal3       string `description:"扩展字段3"`
	ExtendVal4       string `description:"扩展字段4"`
	ExtendVal5       string `description:"扩展字段5"`
	UpdateUser       string `description:"创建用户"`
	UpdateTime       string `description:"创建时间"`
}

type WorkFlow struct {
	WorkFlowID   string `description:"工作流ID"`
	WorkFlowCode string `description:"工作流编码"`
	WorkFlowName string `description:"工作流名称"`
	FlowID       string `description:"流ID"`
	IsUse        int    `description:"是否启用(相同编码同一时间只允许有一个流被启用)"`
	CreateUserID string `description:"创建人ID"`
	CreateUser   string `description:"创建人"`
	CreateTime   string `description:"创建时间"`
	OrgID        string `description:"组织ID"`
}

// WorkNode 工作节点
type WorkNode struct {
	WorkID           string `description:"工作ID"`
	WorkFlowID       string `description:"工作流ID"`
	WorkFlowCode     string `description:"工作编码"`
	WorkName         string `description:"工作名称"`
	WorkStatus       int    `description:"工作状态(0=运行,1=结束,2=终止)"`
	WorkEndMemo      string `description:"工作结束备注"`
	WorkDetailID     string `description:"工作明细ID"`
	WorkDetailStatus int    `description:"工作状态(0=未启用,1=启用,2=结束)"`
	NodeID           string `description:"节点ID"`
	NodeType         int    `description:"节点类型"`
	RouteID          string `description:"判断ID"`
	NodeName         string `description:"节点名称"`
	ExtendVal1       string `description:"扩展字段1"`
	ExtendVal2       string `description:"扩展字段2"`
	ExtendVal3       string `description:"扩展字段3"`
	ExtendVal4       string `description:"扩展字段4"`
	ExtendVal5       string `description:"扩展字段5"`
	Data             string `description:"工作数据的json内容"`
	RouteSuccID      string `description:"判断成功流程ID"`
	RouteFailID      string `description:"判断失败流程ID"`
	ChildID          string `description:"下游节点ID"`
	SRouteID         string `description:"工作流判断ID"`
}
